Practical Ne-grained Static Slicing of Optimized Code Practical Ne-grained Static Slicing of Optimized Code
نویسنده
چکیده
Program slicing is a technique for visualizing dependences and restricting attention to just the components of a program relevant to evaluation of certain expressions. Backward slicing reveals which other parts of the program the expressions' meaning depends on, while forward slicing determines which parts of the program depend on their meaning. Slicing helps programmers understand program structure, which aids program understanding, maintenance, testing, and debugging; slicing can also assist parallelization, integration and comparison of program versions, and other tasks. This paper improves previous techniques for static slicing. Our algorithm is expression-oriented rather than based on statements and variables, resulting in smaller slices. A user can slice on any value computed by the program|including ones that are not, or cannot be, assigned to variables. The slicer accounts for function calls, pointers, and aggregate structures. It takes advantage of compiler analyses and transformations, resulting in more precise slices, and bypasses syntactic constraints by directly constructing executable slices. These techniques are implemented in a slicer for the C programming language that accepts input via mouse clicks; operates on the value dependence graph, a dataaow-like program representation that is especially well-suited to slicing; and displays closure slices by highlighting portions of the program in the programmer's editor.
منابع مشابه
Practical ne-grained static slicing of optimized code
Program slicing is a technique for visualizing dependences and restricting attention to just the components of a program relevant to evaluation of certain expressions. Backward slicing reveals which other parts of the program the expressions' meaning depends on, while forward slicing determines which parts of the program depend on their meaning. Slicing helps programmers understand program stru...
متن کاملOptimizing KLIC Generic Objects by Static Analysis
The KLIC system has achieved both high portability and extensibility by employing C as an intermediate language and featuring generic objects that allow users to dene new classes of data. It is also e cient for an untyped and unmoded language with ne-grained concurrency, but its exibility incurs runtime overhead that could be reduced by static analysis. This paper studies how constraint-based s...
متن کاملClauser: Clause Slicing Tool for C Programs
The Clause slicing technique is a static slicing technique. The clause slice criterion is the clause, which is the smallest part of the code line, with the clause number. In this paper, we introduce the “Clauser,” which is a new clause slicing tool for C programs. The Clauser is a slicing tool that divides the program code lines into clauses, depending on certain rules, and then it slices the c...
متن کاملSlicing Concurrent Logic Programs
Program slicing has been widely studied for imperative programs, but for logic programs it is just starting. In this paper we address the problem of slicing concurrent logic programs. To solve this problem, we propose three types of primary program dependences between arguments in concurrent logic programs, named the sharing dependence, communication dependence and uni cation dependence. We als...
متن کاملStatic Backward Program Slicing for Safety-Critical Systems
Static program slicing is a technique to detect the program parts (i.e. the “slice”) of the given program possibly affecting a given property. The technique is of interest for analysing safety-critical software, since it can identify the program parts that may affect various safety properties. Verification efforts can then be directed towards those parts, leading to a more efficient verificatio...
متن کامل